package persistence;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import model.*;

public abstract class APVenta {

	public static boolean insertarVenta(Venta venta) {
		// Obtener conexion BD
		Connection con = AdministradorConexiones.getInstancia().crearConexion();

		// Generar sentencia SQL
		try {
			// Insertar la venta
			String senten = "INSERT INTO Ventas (numero,fecha, estado) VALUES (?, getdate(),'Cerrada')";
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setInt(1, venta.getNumero());
			ps.execute();

			// Insertar los items de la venta
			for (int i = 0; i<venta.getItems().size();i++) {

				senten = "INSERT INTO ItemVenta (numero, idRopa, cantidad) VALUES (?,?,?)";
				ps = null;
				ps = con.prepareStatement(senten);
				ps.setInt(1, venta.getNumero());
				ps.setInt(2, venta.getItems().elementAt(i).getRopa().getCodigo());
				ps.setInt(3, venta.getItems().elementAt(i).getCantidad());
				ps.execute();
			}

			AdministradorConexiones.getInstancia().cerrarConexion(con);
			
			return true;
		} catch (SQLException e) {
			System.out.println("Mensaje Error al Insertar Venta: " + e.getMessage());
			System.out.println("Stack Trace al Insertar Venta: " + e.getStackTrace());
			AdministradorConexiones.getInstancia().cerrarConexion(con);
			return false;
		}
	}

	public static Venta buscarVentaAbierta() {
		Connection con = AdministradorConexiones.getInstancia().crearConexion();
		Venta ven = null;
		String sentence = "Select * from Ventas where estado = 'Abierta'";
		PreparedStatement ps = null;
		try {
			ps = con.prepareStatement(sentence);
			ResultSet result = ps.executeQuery();
			while(result.next()){
				ven = new Venta(result.getInt("numero"),result.getDate("fecha"),result.getString("estado")); 
			}
			AdministradorConexiones.getInstancia().cerrarConexion(con);
		} catch (SQLException e) {
			System.out.println("Mensaje Error al buscar orden activas: " + e.getMessage());
			System.out.println("Stack Trace al buscar orden activas: " + e.getStackTrace());
			AdministradorConexiones.getInstancia().cerrarConexion(con);
		}		
		return ven;
	}


	public static boolean buscarVenta(int parseInt) {
		Connection con = AdministradorConexiones.getInstancia().crearConexion();
		boolean ven = false;
		
		try {
			String sentence = "Select * from Ventas where numero = ?";
			PreparedStatement ps = null;
			
			ps = con.prepareStatement(sentence);
			ps.setInt(1,parseInt);
			ResultSet result = ps.executeQuery();
			while(result.next()){
				 ven = true;
			}
			AdministradorConexiones.getInstancia().cerrarConexion(con);
		} catch (SQLException e) {
			System.out.println("Mensaje Error al buscar orden activas: " + e.getMessage());
			System.out.println("Stack Trace al buscar orden activas: " + e.getStackTrace());
			AdministradorConexiones.getInstancia().cerrarConexion(con);
		}		
		return ven;
		
	}

}

